import crypto from 'crypto';

/**
 * 简单的密码加密和验证工具
 * 由于bcrypt安装问题，使用Node.js内置的crypto模块替代
 */
export const auth = {
  /**
   * 生成密码哈希
   * @param password 原始密码
   * @returns 哈希后的密码和盐值
   */
  hashPassword: (password: string): { hash: string; salt: string } => {
    const salt = crypto.randomBytes(16).toString('hex');
    const hash = crypto
      .pbkdf2Sync(password, salt, 1000, 64, 'sha512')
      .toString('hex');
    return { hash, salt };
  },

  /**
   * 验证密码
   * @param password 待验证的密码
   * @param hash 存储的哈希值
   * @param salt 存储的盐值
   * @returns 密码是否匹配
   */
  verifyPassword: (password: string, hash: string, salt: string): boolean => {
    const verifyHash = crypto
      .pbkdf2Sync(password, salt, 1000, 64, 'sha512')
      .toString('hex');
    return hash === verifyHash;
  },
};